package map;

import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

import static java.lang.Thread.sleep;

public class MapDemo03 {
    static int i=0;
    public static void main(String[] args) throws InterruptedException {
        //HashMap线程不安全
        HashMap<String, Integer> map1 = new HashMap<>();
        map1.put("A",100);
        map1.put("B",80);
        map1.put("C",60);
        map1.put("D",40);
        System.out.println(map1);
        //将线程不安全的map对象转换为线程安全的map对象
        Map<String, Integer> map2 = Collections.synchronizedMap(map1);

        //LinkedHashMao（可以记录key的人添加顺序）
        LinkedHashMap<String, Integer> map3 = new LinkedHashMap<>();
        map3.put("D",100);
        map3.put("C",80);
        map3.put("B",60);
        map3.put("A",40);
        System.out.println(map3);

        //TreeMap（这个map可以对添加的元素进行排序,可以需要实现Comparable接口
        // 或者构建TreeMap对象时，指定Comparator对象设计排序逻辑）
        TreeMap<Integer, String> treeMap = new TreeMap<>();
        treeMap.put(1,"A");
        treeMap.put(2,"B");
        treeMap.put(3,"C");
        treeMap.put(4,"D");
        System.out.println(treeMap);

        //线程安全的HashMap（可以在并发环境下使用）
        ConcurrentMap<String, Integer> map4 = new ConcurrentHashMap<>();
        map4.put("A",100);
        map4.put("B",200);
        map4.put("C",300);
        map4.put("D",400);
        System.out.println(map4);
    }
}
